package com.tosee.logic;

import com.tosee.exception.GeneriqueException;
import com.tosee.model.dbTosee.Episode;
import com.tosee.model.dbTosee.Serie;
import com.tosee.model.dbTosee.User;
import com.tosee.model.dto.AbstractDto;
import com.tosee.model.dto.UserDto;

/**
 * Interface BL User
 * 
 * @author RobinT
 */
public interface IUserBusinessLogic {

    /**
     * Methode d'authentification
     * 
     * @param _abstractDto Le dto portant les infos utilisateur
     * @return {@link UserDto}
     */
    public UserDto authentifier(AbstractDto _abstractDto);

    /**
     * Methode de creation d'un utilisateur
     * 
     * @param _user L'utilisateur à créer
     * @return L'identifiant
     * @throws Exception L'exception
     */
    public Integer creerUtilisateur(UserDto _user) throws GeneriqueException;

    /**
     * Methode de récuperation d'un utilisateur par l'abstractDto
     * 
     * @param _abstract Le dto contenant les infos user
     * @return L'identifiant
     * @throws Exception L'exception
     */
    public User getUser(AbstractDto _abstract);

    /**
     * Methode de liaison user/serie
     * 
     * @param _user L'utilisateur
     * @param _serieLocale La série
     * @return <code>true</code> si liaison ok, <code>false</code> sinon
     * @throws GeneriqueException
     */
    public boolean ajouterSerieToUser(User _user, Serie _serieLocale) throws GeneriqueException;

    /**
     * Methode de liaison user/serie
     * 
     * @param _user L'utilisateur
     * @param _episodeLocal L'episode
     * @return <code>true</code> si liaison ok, <code>false</code> sinon
     * @throws GeneriqueException
     */
    public boolean ajouterEpisodeToUser(User _user, Episode _episodeLocal) throws GeneriqueException;

}
